home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / text / html / HTMLDocument.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  18.0 KB  |  749 lines

  1. package javax.swing.text.html;
  2.  
  3. import java.io.IOException;
  4. import java.io.StringReader;
  5. import java.net.URL;
  6. import java.net.URLEncoder;
  7. import java.util.BitSet;
  8. import java.util.Enumeration;
  9. import java.util.Hashtable;
  10. import javax.swing.ButtonGroup;
  11. import javax.swing.ButtonModel;
  12. import javax.swing.ComboBoxModel;
  13. import javax.swing.DefaultComboBoxModel;
  14. import javax.swing.DefaultListModel;
  15. import javax.swing.JToggleButton;
  16. import javax.swing.event.DocumentEvent;
  17. import javax.swing.event.HyperlinkEvent;
  18. import javax.swing.event.UndoableEditEvent;
  19. import javax.swing.event.DocumentEvent.EventType;
  20. import javax.swing.text.AbstractDocument;
  21. import javax.swing.text.AttributeSet;
  22. import javax.swing.text.BadLocationException;
  23. import javax.swing.text.DefaultStyledDocument;
  24. import javax.swing.text.Document;
  25. import javax.swing.text.Element;
  26. import javax.swing.text.ElementIterator;
  27. import javax.swing.text.GapContent;
  28. import javax.swing.text.MutableAttributeSet;
  29. import javax.swing.text.PlainDocument;
  30. import javax.swing.text.SimpleAttributeSet;
  31. import javax.swing.text.StyleConstants;
  32. import javax.swing.text.html.HTML.Attribute;
  33. import javax.swing.text.html.HTML.Tag;
  34. import javax.swing.undo.CompoundEdit;
  35.  
  36. public class HTMLDocument extends DefaultStyledDocument {
  37.    private boolean frameDocument;
  38.    private boolean preservesUnknownTags;
  39.    private ButtonGroup radioButtonGroup;
  40.    static final String TokenThreshold = "token threshold";
  41.    public static final String AdditionalComments = "AdditionalComments";
  42.    static final String StyleType = "StyleType";
  43.    URL base;
  44.    private static AttributeSet contentAttributeSet = new SimpleAttributeSet();
  45.    static String MAP_PROPERTY = "__MAP__";
  46.    static String PARSER_PROPERTY = "__PARSER__";
  47.    static HTML.UnknownTag EndOfLineTag;
  48.    private static char[] NEWLINE;
  49.  
  50.    static {
  51.       ((MutableAttributeSet)contentAttributeSet).addAttribute(StyleConstants.NameAttribute, Tag.CONTENT);
  52.       NEWLINE = new char[1];
  53.       NEWLINE[0] = '\n';
  54.       EndOfLineTag = new HTML.UnknownTag("__EndOfLineTag__");
  55.    }
  56.  
  57.    public HTMLDocument() {
  58.       this(new GapContent(4096), new StyleSheet());
  59.    }
  60.  
  61.    public HTMLDocument(AbstractDocument.Content var1, StyleSheet var2) {
  62.       super(var1, var2);
  63.       this.frameDocument = false;
  64.       this.preservesUnknownTags = true;
  65.    }
  66.  
  67.    public HTMLDocument(StyleSheet var1) {
  68.       this(new GapContent(4096), var1);
  69.    }
  70.  
  71.    // $FF: synthetic method
  72.    static char[] access$0() {
  73.       return NEWLINE;
  74.    }
  75.  
  76.    // $FF: synthetic method
  77.    static ButtonGroup access$1(HTMLDocument var0) {
  78.       return var0.radioButtonGroup;
  79.    }
  80.  
  81.    // $FF: synthetic method
  82.    static void access$2(HTMLDocument var0, ButtonGroup var1) {
  83.       var0.radioButtonGroup = var1;
  84.    }
  85.  
  86.    void addMap(Map var1) {
  87.       String var2 = var1.getName();
  88.       if (var2 != null) {
  89.          Object var3 = ((AbstractDocument)this).getProperty(MAP_PROPERTY);
  90.          if (var3 == null) {
  91.             var3 = new Hashtable(11);
  92.             ((AbstractDocument)this).putProperty(MAP_PROPERTY, var3);
  93.          }
  94.  
  95.          if (var3 instanceof Hashtable) {
  96.             ((Hashtable)var3).put("#" + var2, var1);
  97.          }
  98.       }
  99.  
  100.    }
  101.  
  102.    private void ampersand(StringBuffer var1) {
  103.       if (var1.length() > 0) {
  104.          var1.append('&');
  105.       }
  106.  
  107.    }
  108.  
  109.    private void appendBuffer(StringBuffer var1, String var2, String var3) {
  110.       this.ampersand(var1);
  111.       String var4 = URLEncoder.encode(var2);
  112.       var1.append(var4);
  113.       var1.append('=');
  114.       String var5 = URLEncoder.encode(var3);
  115.       var1.append(var5);
  116.    }
  117.  
  118.    protected void create(DefaultStyledDocument.ElementSpec[] var1) {
  119.       super.create(var1);
  120.    }
  121.  
  122.    protected Element createBranchElement(Element var1, AttributeSet var2) {
  123.       return new BlockElement(this, var1, var2);
  124.    }
  125.  
  126.    protected AbstractDocument.AbstractElement createDefaultRoot() {
  127.       ((AbstractDocument)this).writeLock();
  128.       SimpleAttributeSet var1 = new SimpleAttributeSet();
  129.       var1.addAttribute(StyleConstants.NameAttribute, Tag.HTML);
  130.       BlockElement var2 = new BlockElement(this, (Element)null, var1.copyAttributes());
  131.       var1.removeAttributes(var1);
  132.       var1.addAttribute(StyleConstants.NameAttribute, Tag.BODY);
  133.       BlockElement var3 = new BlockElement(this, var2, var1.copyAttributes());
  134.       var1.removeAttributes(var1);
  135.       var1.addAttribute(StyleConstants.NameAttribute, Tag.P);
  136.       BlockElement var4 = new BlockElement(this, var3, var1.copyAttributes());
  137.       var1.removeAttributes(var1);
  138.       var1.addAttribute(StyleConstants.NameAttribute, Tag.CONTENT);
  139.       RunElement var5 = new RunElement(this, var4, var1, 0, 1);
  140.       Element[] var6 = new Element[]{var5};
  141.       ((AbstractDocument.BranchElement)var4).replace(0, 0, var6);
  142.       var6[0] = var4;
  143.       ((AbstractDocument.BranchElement)var3).replace(0, 0, var6);
  144.       var6[0] = var3;
  145.       ((AbstractDocument.BranchElement)var2).replace(0, 0, var6);
  146.       ((AbstractDocument)this).writeUnlock();
  147.       return var2;
  148.    }
  149.  
  150.    protected Element createLeafElement(Element var1, AttributeSet var2, int var3, int var4) {
  151.       return new RunElement(this, var1, var2, var3, var4);
  152.    }
  153.  
  154.    private Element findFrame(String var1) {
  155.       ElementIterator var2 = new ElementIterator(this);
  156.       Object var3 = null;
  157.  
  158.       while((var6 = var2.next()) != null) {
  159.          AttributeSet var4 = var6.getAttributes();
  160.          if (this.matchNameAttribute(var4, Tag.FRAME)) {
  161.             String var5 = (String)var4.getAttribute(Attribute.NAME);
  162.             if (var5.equals(var1)) {
  163.                break;
  164.             }
  165.          }
  166.       }
  167.  
  168.       return var6;
  169.    }
  170.  
  171.    protected void fireChangedUpdate(DocumentEvent var1) {
  172.       super.fireChangedUpdate(var1);
  173.    }
  174.  
  175.    protected void fireUndoableEditUpdate(UndoableEditEvent var1) {
  176.       super.fireUndoableEditUpdate(var1);
  177.    }
  178.  
  179.    private boolean formMatchesSubmissionRequest(AttributeSet var1, AttributeSet var2) {
  180.       AttributeSet var3 = this.getFormAttributes(var1);
  181.       return var3 != null ? var2.isEqual(var3) : false;
  182.    }
  183.  
  184.    public URL getBase() {
  185.       return this.base;
  186.    }
  187.  
  188.    String getDefaultStyleSheetType() {
  189.       String var1 = (String)((AbstractDocument)this).getProperty("StyleType");
  190.       return var1 == null ? "text/css" : var1;
  191.    }
  192.  
  193.    Element getElementByID(String var1) {
  194.       return var1 == null ? null : this.getElementWithAttribute(((DefaultStyledDocument)this).getDefaultRootElement(), Attribute.ID, var1);
  195.    }
  196.  
  197.    Element getElementWithAttribute(Element var1, Object var2, Object var3) {
  198.       AttributeSet var4 = var1.getAttributes();
  199.       if (var4 != null && var4.isDefined(var2) && var3.equals(var4.getAttribute(var2))) {
  200.          return var1;
  201.       } else {
  202.          if (!var1.isLeaf()) {
  203.             int var5 = 0;
  204.  
  205.             for(int var6 = var1.getElementCount(); var5 < var6; ++var5) {
  206.                Element var7 = this.getElementWithAttribute(var1.getElement(var5), var2, var3);
  207.                if (var7 != null) {
  208.                   return var7;
  209.                }
  210.             }
  211.          }
  212.  
  213.          return null;
  214.       }
  215.    }
  216.  
  217.    AttributeSet getFormAttributes(AttributeSet var1) {
  218.       Enumeration var2 = var1.getAttributeNames();
  219.  
  220.       while(var2.hasMoreElements()) {
  221.          Object var3 = var2.nextElement();
  222.          if (var3 instanceof HTML.Tag) {
  223.             HTML.Tag var4 = (HTML.Tag)var3;
  224.             if (var4 == Tag.FORM) {
  225.                Object var5 = var1.getAttribute(var4);
  226.                if (var5 != null && var5 instanceof AttributeSet) {
  227.                   return (AttributeSet)var5;
  228.                }
  229.             }
  230.          }
  231.       }
  232.  
  233.       return null;
  234.    }
  235.  
  236.    void getFormData(StringBuffer var1, Element var2) {
  237.       AttributeSet var3 = var2.getAttributes();
  238.       AttributeSet var4 = this.getFormAttributes(var3);
  239.       ElementIterator var5 = new ElementIterator(((DefaultStyledDocument)this).getDefaultRootElement());
  240.       if (var4 != null) {
  241.          boolean var7 = false;
  242.  
  243.          Element var6;
  244.          while((var6 = var5.next()) != null) {
  245.             AttributeSet var8 = var6.getAttributes();
  246.             if (this.formMatchesSubmissionRequest(var8, var4)) {
  247.                var7 = true;
  248.                String var9 = (String)var8.getAttribute(Attribute.TYPE);
  249.                if ((var9 == null || !var9.equals("submit") || var6 == var2) && (var9 == null || !var9.equals("image"))) {
  250.                   this.loadElementDataIntoBuffer(var6, var1);
  251.                }
  252.             } else if (var7 && var6.isLeaf()) {
  253.                break;
  254.             }
  255.          }
  256.  
  257.       }
  258.    }
  259.  
  260.    private String getInputElementData(AttributeSet var1) {
  261.       Object var2 = var1.getAttribute(StyleConstants.ModelAttribute);
  262.       String var3 = (String)var1.getAttribute(Attribute.TYPE);
  263.       String var4 = null;
  264.       if (!var3.equals("text") && !var3.equals("password")) {
  265.          if (!var3.equals("submit") && !var3.equals("hidden")) {
  266.             if (var3.equals("radio") || var3.equals("checkbox")) {
  267.                ButtonModel var7 = (ButtonModel)var2;
  268.                if (var7.isSelected()) {
  269.                   var4 = (String)var1.getAttribute(Attribute.VALUE);
  270.                   if (var4 == null) {
  271.                      var4 = "on";
  272.                   }
  273.                }
  274.             }
  275.          } else {
  276.             var4 = (String)var1.getAttribute(Attribute.VALUE);
  277.             if (var4 == null) {
  278.                var4 = "";
  279.             }
  280.          }
  281.       } else {
  282.          Document var5 = (Document)var2;
  283.  
  284.          try {
  285.             var4 = var5.getText(0, var5.getLength());
  286.          } catch (BadLocationException var6) {
  287.             var4 = null;
  288.          }
  289.       }
  290.  
  291.       return var4;
  292.    }
  293.  
  294.    public Iterator getIterator(HTML.Tag var1) {
  295.       return var1.isBlock() ? null : new LeafIterator(var1, this);
  296.    }
  297.  
  298.    Map getMap(String var1) {
  299.       if (var1 != null) {
  300.          Object var2 = ((AbstractDocument)this).getProperty(MAP_PROPERTY);
  301.          if (var2 != null && var2 instanceof Hashtable) {
  302.             return (Map)((Hashtable)var2).get(var1);
  303.          }
  304.       }
  305.  
  306.       return null;
  307.    }
  308.  
  309.    Enumeration getMaps() {
  310.       Object var1 = ((AbstractDocument)this).getProperty(MAP_PROPERTY);
  311.       return var1 instanceof Hashtable ? ((Hashtable)var1).elements() : null;
  312.    }
  313.  
  314.    HTMLEditorKit.Parser getParser() {
  315.       Object var1 = ((AbstractDocument)this).getProperty(PARSER_PROPERTY);
  316.       return var1 instanceof HTMLEditorKit.Parser ? (HTMLEditorKit.Parser)var1 : null;
  317.    }
  318.  
  319.    public boolean getPreservesUnknownTags() {
  320.       return this.preservesUnknownTags;
  321.    }
  322.  
  323.    public HTMLEditorKit.ParserCallback getReader(int var1) {
  324.       Object var2 = ((AbstractDocument)this).getProperty("stream");
  325.       if (var2 instanceof URL) {
  326.          this.base = (URL)var2;
  327.       }
  328.  
  329.       HTMLReader var3 = new HTMLReader(this, var1);
  330.       return var3;
  331.    }
  332.  
  333.    public HTMLEditorKit.ParserCallback getReader(int var1, int var2, int var3, HTML.Tag var4) {
  334.       return this.getReader(var1, var2, var3, var4, true);
  335.    }
  336.  
  337.    HTMLEditorKit.ParserCallback getReader(int var1, int var2, int var3, HTML.Tag var4, boolean var5) {
  338.       Object var6 = ((AbstractDocument)this).getProperty("stream");
  339.       if (var6 instanceof URL) {
  340.          this.base = (URL)var6;
  341.          this.getStyleSheet().setBase(this.base);
  342.       }
  343.  
  344.       HTMLReader var7 = new HTMLReader(this, var1, var2, var3, var4, var5);
  345.       return var7;
  346.    }
  347.  
  348.    public StyleSheet getStyleSheet() {
  349.       return (StyleSheet)((AbstractDocument)this).getAttributeContext();
  350.    }
  351.  
  352.    private String getTextAreaData(AttributeSet var1) {
  353.       Document var2 = (Document)var1.getAttribute(StyleConstants.ModelAttribute);
  354.  
  355.       try {
  356.          return var2.getText(0, var2.getLength());
  357.       } catch (BadLocationException var3) {
  358.          return null;
  359.       }
  360.    }
  361.  
  362.    public int getTokenThreshold() {
  363.       Integer var1 = (Integer)((AbstractDocument)this).getProperty("token threshold");
  364.       return var1 != null ? var1 : Integer.MAX_VALUE;
  365.    }
  366.  
  367.    protected void insert(int var1, DefaultStyledDocument.ElementSpec[] var2) throws BadLocationException {
  368.       super.insert(var1, var2);
  369.    }
  370.  
  371.    void insertAfterEnd(Element var1, String var2) throws BadLocationException, IOException {
  372.       if (var1 != null) {
  373.          Element var3 = var1.getParentElement();
  374.          if (var3 != null) {
  375.             this.insertHTML(var3, var1.getEndOffset(), var2, (HTML.Tag)null);
  376.          }
  377.       }
  378.  
  379.    }
  380.  
  381.    void insertAfterStart(Element var1, String var2) throws BadLocationException, IOException {
  382.       this.insertHTML(var1, var1.getStartOffset(), var2, (HTML.Tag)null);
  383.    }
  384.  
  385.    void insertBeforeEnd(Element var1, String var2) throws BadLocationException, IOException {
  386.       this.insertHTML(var1, var1.getEndOffset(), var2, (HTML.Tag)null);
  387.    }
  388.  
  389.    void insertBeforeStart(Element var1, String var2) throws BadLocationException, IOException {
  390.       if (var1 != null) {
  391.          Element var3 = var1.getParentElement();
  392.          if (var3 != null) {
  393.             this.insertHTML(var3, var1.getStartOffset(), var2, (HTML.Tag)null);
  394.          }
  395.       }
  396.  
  397.    }
  398.  
  399.    void insertHTML(Element var1, int var2, String var3, HTML.Tag var4) throws BadLocationException, IOException {
  400.       if (var1 != null && var3 != null) {
  401.          Object var5 = var4 != null ? var4 : var1.getAttributes().getAttribute(StyleConstants.NameAttribute);
  402.          HTMLEditorKit.Parser var6 = this.getParser();
  403.          if (var6 != null && var5 != null && var5 instanceof HTML.Tag) {
  404.             int var7 = Math.max(0, var2 - 1);
  405.             Element var8 = ((DefaultStyledDocument)this).getCharacterElement(var7);
  406.             Element var9 = var1;
  407.             int var10 = 0;
  408.             int var11 = 0;
  409.             if (var1.getStartOffset() > var7) {
  410.                while(var9 != null && var9.getStartOffset() > var7) {
  411.                   var9 = var9.getParentElement();
  412.                   ++var11;
  413.                }
  414.  
  415.                if (var9 == null) {
  416.                   throw new BadLocationException("No common parent", var2);
  417.                }
  418.             }
  419.  
  420.             while(var8 != null && var8 != var9) {
  421.                ++var10;
  422.                var8 = var8.getParentElement();
  423.             }
  424.  
  425.             if (var8 != null) {
  426.                HTMLEditorKit.ParserCallback var12 = this.getReader(var2, var10 - 1, var11, (HTML.Tag)var5, var4 != null);
  427.                var6.parse(new StringReader(var3), var12, true);
  428.                var12.flush();
  429.             }
  430.          }
  431.       }
  432.  
  433.    }
  434.  
  435.    protected void insertUpdate(AbstractDocument.DefaultDocumentEvent var1, AttributeSet var2) {
  436.       if (var2 == null) {
  437.          var2 = contentAttributeSet;
  438.       } else if (var2.isDefined(StyleConstants.ComposedTextAttribute)) {
  439.          ((MutableAttributeSet)var2).addAttributes(contentAttributeSet);
  440.       }
  441.  
  442.       super.insertUpdate(var1, var2);
  443.    }
  444.  
  445.    boolean isFrameDocument() {
  446.       return this.frameDocument;
  447.    }
  448.  
  449.    boolean isLastTextOrPasswordField(Element var1) {
  450.       ElementIterator var2 = new ElementIterator(((DefaultStyledDocument)this).getDefaultRootElement());
  451.       boolean var4 = false;
  452.       AttributeSet var5 = this.getFormAttributes(var1.getAttributes());
  453.  
  454.       while(true) {
  455.          Element var3;
  456.          if ((var3 = var2.next()) != null) {
  457.             AttributeSet var6 = var3.getAttributes();
  458.             if (this.formMatchesSubmissionRequest(var6, var5)) {
  459.                if (var4 && this.matchNameAttribute(var6, Tag.INPUT)) {
  460.                   String var7 = (String)var6.getAttribute(Attribute.TYPE);
  461.                   if (var7.equals("text") || var7.equals("password")) {
  462.                      return false;
  463.                   }
  464.                }
  465.  
  466.                if (var3 == var1) {
  467.                   var4 = true;
  468.                }
  469.                continue;
  470.             }
  471.  
  472.             if (!var4 || !var3.isLeaf()) {
  473.                continue;
  474.             }
  475.          }
  476.  
  477.          return true;
  478.       }
  479.    }
  480.  
  481.    private void loadElementDataIntoBuffer(Element var1, StringBuffer var2) {
  482.       AttributeSet var3 = var1.getAttributes();
  483.       String var4 = (String)var3.getAttribute(Attribute.NAME);
  484.       if (var4 != null) {
  485.          String var5 = null;
  486.          HTML.Tag var6 = (HTML.Tag)var1.getAttributes().getAttribute(StyleConstants.NameAttribute);
  487.          if (var6 == Tag.INPUT) {
  488.             var5 = this.getInputElementData(var3);
  489.          } else if (var6 == Tag.TEXTAREA) {
  490.             var5 = this.getTextAreaData(var3);
  491.          } else if (var6 == Tag.SELECT) {
  492.             this.loadSelectData(var3, var2);
  493.          }
  494.  
  495.          if (var4 != null && var5 != null) {
  496.             this.appendBuffer(var2, var4, var5);
  497.          }
  498.  
  499.       }
  500.    }
  501.  
  502.    private void loadSelectData(AttributeSet var1, StringBuffer var2) {
  503.       String var3 = (String)var1.getAttribute(Attribute.NAME);
  504.       if (var3 != null) {
  505.          Object var4 = var1.getAttribute(StyleConstants.ModelAttribute);
  506.          if (var4 instanceof OptionListModel) {
  507.             OptionListModel var5 = (OptionListModel)var4;
  508.  
  509.             for(int var6 = 0; var6 < ((DefaultListModel)var5).getSize(); ++var6) {
  510.                if (var5.isSelectedIndex(var6)) {
  511.                   Option var7 = (Option)((DefaultListModel)var5).getElementAt(var6);
  512.                   this.appendBuffer(var2, var3, var7.getValue());
  513.                }
  514.             }
  515.          } else if (var4 instanceof ComboBoxModel) {
  516.             ComboBoxModel var8 = (ComboBoxModel)var4;
  517.             Option var9 = (Option)var8.getSelectedItem();
  518.             if (var9 != null) {
  519.                this.appendBuffer(var2, var3, var9.getValue());
  520.             }
  521.          }
  522.  
  523.       }
  524.    }
  525.  
  526.    boolean matchNameAttribute(AttributeSet var1, HTML.Tag var2) {
  527.       Object var3 = var1.getAttribute(StyleConstants.NameAttribute);
  528.       if (var3 instanceof HTML.Tag) {
  529.          HTML.Tag var4 = (HTML.Tag)var3;
  530.          if (var4 == var2) {
  531.             return true;
  532.          }
  533.       }
  534.  
  535.       return false;
  536.    }
  537.  
  538.    void obtainLock() {
  539.       ((AbstractDocument)this).writeLock();
  540.    }
  541.  
  542.    public void processHTMLFrameHyperlinkEvent(HTMLFrameHyperlinkEvent var1) {
  543.       String var2 = var1.getTarget();
  544.       Element var3 = var1.getSourceElement();
  545.       String var4 = ((HyperlinkEvent)var1).getURL().toString();
  546.       if (var2.equals("_self")) {
  547.          this.updateFrame(var3, var4);
  548.       } else if (var2.equals("_parent")) {
  549.          this.updateFrameSet(var3.getParentElement(), var4);
  550.       } else {
  551.          Element var5 = this.findFrame(var2);
  552.          if (var5 != null) {
  553.             this.updateFrame(var5, var4);
  554.          }
  555.       }
  556.  
  557.    }
  558.  
  559.    void releaseLock() {
  560.       ((AbstractDocument)this).writeUnlock();
  561.    }
  562.  
  563.    void removeMap(Map var1) {
  564.       String var2 = var1.getName();
  565.       if (var2 != null) {
  566.          Object var3 = ((AbstractDocument)this).getProperty(MAP_PROPERTY);
  567.          if (var3 instanceof Hashtable) {
  568.             ((Hashtable)var3).remove("#" + var2);
  569.          }
  570.       }
  571.  
  572.    }
  573.  
  574.    void resetForm(Element var1) {
  575.       ElementIterator var2 = new ElementIterator(((DefaultStyledDocument)this).getDefaultRootElement());
  576.       boolean var4 = false;
  577.       AttributeSet var5 = this.getFormAttributes(var1.getAttributes());
  578.  
  579.       Element var3;
  580.       while((var3 = var2.next()) != null) {
  581.          AttributeSet var6 = var3.getAttributes();
  582.          if (!this.formMatchesSubmissionRequest(var6, var5)) {
  583.             if (var4 && var3.isLeaf()) {
  584.                break;
  585.             }
  586.          } else {
  587.             Object var7 = var6.getAttribute(StyleConstants.ModelAttribute);
  588.             if (var7 instanceof TextAreaDocument) {
  589.                TextAreaDocument var8 = (TextAreaDocument)var7;
  590.                var8.reset();
  591.             } else if (var7 instanceof PlainDocument) {
  592.                try {
  593.                   PlainDocument var14 = (PlainDocument)var7;
  594.                   ((AbstractDocument)var14).remove(0, ((AbstractDocument)var14).getLength());
  595.                   if (this.matchNameAttribute(var6, Tag.INPUT)) {
  596.                      String var9 = (String)var6.getAttribute(Attribute.VALUE);
  597.                      if (var9 != null) {
  598.                         ((AbstractDocument)var14).insertString(0, var9, (AttributeSet)null);
  599.                      }
  600.                   }
  601.                } catch (BadLocationException var13) {
  602.                }
  603.             } else if (var7 instanceof OptionListModel) {
  604.                OptionListModel var15 = (OptionListModel)var7;
  605.                int var18 = ((DefaultListModel)var15).getSize();
  606.  
  607.                for(int var10 = 0; var10 < var18; ++var10) {
  608.                   var15.removeIndexInterval(var10, var10);
  609.                }
  610.  
  611.                BitSet var11 = var15.getInitialSelection();
  612.  
  613.                for(int var12 = 0; var12 < var11.size(); ++var12) {
  614.                   if (var11.get(var12)) {
  615.                      var15.addSelectionInterval(var12, var12);
  616.                   }
  617.                }
  618.             } else if (var7 instanceof OptionComboBoxModel) {
  619.                OptionComboBoxModel var16 = (OptionComboBoxModel)var7;
  620.                Option var19 = var16.getInitialSelection();
  621.                if (var19 != null) {
  622.                   ((DefaultComboBoxModel)var16).setSelectedItem(var19);
  623.                }
  624.             } else if (var7 instanceof JToggleButton.ToggleButtonModel) {
  625.                boolean var17 = (String)var6.getAttribute(Attribute.CHECKED) != null;
  626.                JToggleButton.ToggleButtonModel var20 = (JToggleButton.ToggleButtonModel)var7;
  627.                var20.setSelected(var17);
  628.             }
  629.  
  630.             var4 = true;
  631.          }
  632.       }
  633.  
  634.    }
  635.  
  636.    public void setBase(URL var1) {
  637.       this.base = var1;
  638.    }
  639.  
  640.    void setDefaultStyleSheetType(String var1) {
  641.       ((AbstractDocument)this).putProperty("StyleType", var1);
  642.    }
  643.  
  644.    void setFrameDocumentState(boolean var1) {
  645.       this.frameDocument = var1;
  646.    }
  647.  
  648.    void setInnerHTML(Element var1, String var2) throws BadLocationException, IOException {
  649.       if (var1 != null && var2 != null) {
  650.          int var3 = var1.getElementCount();
  651.          this.insertHTML(var1, var1.getEndOffset(), var2, (HTML.Tag)null);
  652.          if (var1.getElementCount() > var3) {
  653.             int var4 = var1.getStartOffset();
  654.             int var5 = var1.getElement(var3).getStartOffset();
  655.             ((AbstractDocument)this).remove(var4, var5 - var4);
  656.          }
  657.       }
  658.  
  659.    }
  660.  
  661.    void setOuterHTML(Element var1, String var2) throws BadLocationException, IOException {
  662.       if (var1 != null && var1.getParentElement() != null && var2 != null) {
  663.          this.insertHTML(var1.getParentElement(), var1.getStartOffset(), var2, (HTML.Tag)null);
  664.          ((AbstractDocument)this).remove(var1.getStartOffset(), var1.getEndOffset() - var1.getStartOffset());
  665.       }
  666.  
  667.    }
  668.  
  669.    public void setParagraphAttributes(int var1, int var2, AttributeSet var3, boolean var4) {
  670.       try {
  671.          ((AbstractDocument)this).writeLock();
  672.          int var7 = Math.min(var1 + var2, ((AbstractDocument)this).getLength());
  673.          Element var8 = ((DefaultStyledDocument)this).getParagraphElement(var1);
  674.          var1 = var8.getStartOffset();
  675.          var8 = ((DefaultStyledDocument)this).getParagraphElement(var7);
  676.          var2 = Math.max(0, var8.getEndOffset() - var1);
  677.          this.getClass();
  678.          AbstractDocument.DefaultDocumentEvent var9 = new AbstractDocument.DefaultDocumentEvent(this, var1, var2, EventType.CHANGE);
  679.          AttributeSet var10 = var3.copyAttributes();
  680.          int var11 = Integer.MAX_VALUE;
  681.  
  682.          for(int var12 = var1; var12 <= var7; var12 = var11) {
  683.             Element var13 = ((DefaultStyledDocument)this).getParagraphElement(var12);
  684.             if (var11 == var13.getEndOffset()) {
  685.                ++var11;
  686.             } else {
  687.                var11 = var13.getEndOffset();
  688.             }
  689.  
  690.             MutableAttributeSet var14 = (MutableAttributeSet)var13.getAttributes();
  691.             var9.addEdit(new DefaultStyledDocument.AttributeUndoableEdit(var13, var10, var4));
  692.             if (var4) {
  693.                var14.removeAttributes(var14);
  694.             }
  695.  
  696.             var14.addAttributes(var3);
  697.          }
  698.  
  699.          ((CompoundEdit)var9).end();
  700.          this.fireChangedUpdate(var9);
  701.          this.fireUndoableEditUpdate(new UndoableEditEvent(this, var9));
  702.       } finally {
  703.          ((AbstractDocument)this).writeUnlock();
  704.       }
  705.  
  706.    }
  707.  
  708.    public void setPreservesUnknownTags(boolean var1) {
  709.       this.preservesUnknownTags = var1;
  710.    }
  711.  
  712.    public void setTokenThreshold(int var1) {
  713.       ((AbstractDocument)this).putProperty("token threshold", new Integer(var1));
  714.    }
  715.  
  716.    private void updateFrame(Element var1, String var2) {
  717.       try {
  718.          ((AbstractDocument)this).writeLock();
  719.          this.getClass();
  720.          AbstractDocument.DefaultDocumentEvent var5 = new AbstractDocument.DefaultDocumentEvent(this, var1.getStartOffset(), 1, EventType.CHANGE);
  721.          AttributeSet var6 = var1.getAttributes().copyAttributes();
  722.          MutableAttributeSet var7 = (MutableAttributeSet)var1.getAttributes();
  723.          var5.addEdit(new DefaultStyledDocument.AttributeUndoableEdit(var1, var6, false));
  724.          var7.removeAttribute(Attribute.SRC);
  725.          var7.addAttribute(Attribute.SRC, var2);
  726.          ((CompoundEdit)var5).end();
  727.          this.fireChangedUpdate(var5);
  728.          this.fireUndoableEditUpdate(new UndoableEditEvent(this, var5));
  729.       } finally {
  730.          ((AbstractDocument)this).writeUnlock();
  731.       }
  732.  
  733.    }
  734.  
  735.    private void updateFrameSet(Element var1, String var2) {
  736.       try {
  737.          int var3 = var1.getStartOffset();
  738.          int var4 = var1.getEndOffset();
  739.          ((AbstractDocument)this).remove(var3, var4 - var3);
  740.          SimpleAttributeSet var5 = new SimpleAttributeSet();
  741.          var5.addAttribute(Attribute.SRC, var2);
  742.          var5.addAttribute(StyleConstants.NameAttribute, Tag.FRAME);
  743.          ((AbstractDocument)this).insertString(var3, " ", var5);
  744.       } catch (BadLocationException var6) {
  745.       }
  746.  
  747.    }
  748. }
  749.